package gvo.importWindow;

import gvo.amazon.AmazonEntry;
import gvo.presets.Presets;
import gvo.rero.MARC_Entry;
import gvo.util.GVOstore;

public class SearchResult {
	public Object rEntry;
	private String titel;
	private String isbn;
	private String ortJahr;
	private String verwandteTitel;
	private String reihe;
	private String ausgabeVersion;
	private String link;
	private static final String EMPTY = "";
	private static final int START = 0;
	private int seite;
	private int nr;
	public boolean isFilled=false; 
	int art;
	public SearchResult(GVOstore gvostore, int art) {
		this.art = art;
		if(art==GVOstore.RERO){
			rEntry = new MARC_Entry(gvostore);
		}
		this.nr = START;
		this.seite = START;
		this.titel = EMPTY;
		this.isbn = EMPTY;
		this.ortJahr = EMPTY;
		this.verwandteTitel = EMPTY;
		this.reihe = EMPTY;
		this.ausgabeVersion = EMPTY;
	}
	public SearchResult(GVOstore gvostore, AmazonEntry ae ) {
		this.art = GVOstore.AMAZON;
		rEntry = ae;
		this.nr = START;
		this.seite = START;
		this.titel = ae.gvoall.buch.getTitel();
		this.isbn = EMPTY;
		this.ortJahr = EMPTY;
		this.verwandteTitel = EMPTY;
		this.reihe = EMPTY;
		this.ausgabeVersion = EMPTY;
	}
	public MARC_Entry getMARC_Entry(){
		if(art == GVOstore.RERO){
			return (MARC_Entry)rEntry;
		}  
		return null;
	}
	public AmazonEntry getAmazonEntry(){
		if(art == GVOstore.AMAZON){
			return (AmazonEntry)rEntry;
		}  
		return null;
	}
	public String printAll(){
		return link + "\n" + seite+ "/" + nr + "/" + titel+ "/" + isbn+ "/" + ortJahr+ "/" + verwandteTitel+ "/" + reihe+ "/" + ausgabeVersion ; 
	}
	public void setLocation(int seite, int nr){
		this.nr = nr;
		this.seite = seite;
	}
	public String toString(){
		 if ((rEntry instanceof MARC_Entry)) {
			 MARC_Entry mEntry = (MARC_Entry)rEntry;
			if(mEntry.isFilled){
				return mEntry.toString();
			} else {
				if(this.isFilled){
					return titel + "- -" + verwandteTitel;
				} 
			}
		}
		return titel;
	}
	public String getTitel() {
		return titel;
	}
	public void setTitel(String titel) {
		this.titel = titel;
	}
	
	public String getOrtJahr() {
		return ortJahr;
	}
	public void setOrtJahr(String ortJahr) {
		this.ortJahr = ortJahr;
	}
	public String getVerwandteTitel() {
		return verwandteTitel;
	}
	public void setVerwandteTitel(String verwandteTitel) {
		this.verwandteTitel = verwandteTitel;
	}
	public String getReihe() {
		return reihe;
	}
	public void setReihe(String reihe) {
		this.reihe = reihe;
	}
	public String getAusgabeVersion() {
		return ausgabeVersion;
	}
	public void setAusgabeVersion(String ausgabeVersion) {
		this.ausgabeVersion = ausgabeVersion;
	}

	public int getNr() {
		return nr;
	}

	public void setNr(int nr) {
		this.nr = nr;
	}
	public int getSeite() {
		return seite;
	}
	public void setSeite(int seite) {
		this.seite = seite;
	}
	public String getLink() {
		return link;
	}
	public void setLink(String link) {
		this.link = link;
	}
	public boolean equals(Object object) {
		if (!(object instanceof SearchResult)) {
			return false;
		}
		if (art == GVOstore.RERO) {
			MARC_Entry mEntry = (MARC_Entry) rEntry;
			if (mEntry.gvoall.buch.getTitel().equals(Presets.EMPTYTXT)) {
				return false;
			}
			SearchResult other = (SearchResult) object;
			if (mEntry.gvoall.buch.getTitel().equals(other.getMARC_Entry().gvoall.buch.getTitel())) {
				return true;
			}
			return false;
		} else if (art == GVOstore.AMAZON) {
			AmazonEntry mEntry = (AmazonEntry) rEntry;
			if (mEntry.gvoall.buch.getTitel().equals(Presets.EMPTYTXT)) {
				return false;
			}
			SearchResult other = (SearchResult) object;
			if (mEntry.gvoall.buch.getIsbnPreis().equals(other.getAmazonEntry().gvoall.buch.getIsbnPreis())) {
				return true;
			}
			return false;
		}

		return false;
	}
	 @Override
		public int hashCode() {
			int hash = 7;
			hash = 31 * hash + seite * 100 + nr ;
			hash = 31 * hash + (null == titel ? 0 : titel.hashCode());
			return hash;
		}
	
}
